import axios from 'axios';
import router from '../router';
import { ElMessage } from 'element-plus';

//这边的作用就是前台自己拦截一些错误请求错误，不需要到后端自己去弄了
axios.interceptors.response.use(success=>{
    //业务逻辑错误
    //也就是页面是成功访问了，返回200，可是后端不准你删除，会返回一个500之类的状态码
    if(success.status && success.status === 200){
        //注：这边返回的数据data，是遵循标准的 success,message,code,data
        //这边判断返回的data里面的code 是不是表示错误的
        if(success.data.code === 500 || success.data.code === 401){
            ElMessage.error({message:success.data.message});
            return;
        }
        //这边如果是成功的，还可以把后台提示的信息显示出来
        if(success.data.mes){
            ElMessage.success({message:success.data.mes});
        }
    }
    return success.data;
},error => {
    //这边是连后台都没获得时的处理
    if(error.response.code === 504 || error.response.code === 404){
        ElMessage.error({message:'服务器连接失败'});
    }else if(error.response.code === 403){
        ElMessage.error({message:'权限不足'});
    }
    else if(error.response.code === 401){
        ElMessage.error({message:'尚未登录，请登录'});
        router.replace('/');
    }else{
        if(error.response.data.message){
            ElMessage.error({message:error.response.data.message});
        }else{
            ElMessage.error({message:'未知错误！'});
        }
    }
    return;
});

let base =''; //process.env.VUE_APP_URL

//传递json格式的post请求
export const postRequest = (url, params) => {
    return axios({
        method: 'post',
        url: `${base}${url}`,
        data: params
    })
}

//传递json格式的post请求
export const postMulRequest = (url, params1,params2,params3,params4) => {
    let datas = {"p1":params1,"p2":params2,"p3":params3,"p4":params4}
    return axios({
        method: 'post',
        url: `${base}${url}`,
        data: datas
    })
}

// 传送 json 格式的 get 请求
export const getRequest = (url, params) => {
    return axios({
        method: 'get',
        url: `${base}${url}`,
        data: params
    })
}

// 传送 json 格式的 put 请求
export const putRequest = (url, params) => {
    return axios({
        method: 'put',
        url: `${base}${url}`,
        data: params
    })
}

// 传送 json 格式的 delete 请求
export const deleteRequest = (url, params) => {
    return axios({
        method: 'delete',
        url: `${base}${url}`,
        data: params
    })
}